home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga News 95
/
Amiga News 95.iso
/
dpat
/
dpat08
/
lfmerge
/
lfmerge.c
next >
Wrap
C/C++ Source or Header
|
1993-02-08
|
2KB
|
107 lines
#include <Stdio.h>
#include <string.h>
#include <exec/types.h>
#define MAXXRES 2048
FILE *e1=NULL,*e2=NULL,*s=NULL;
UBYTE lb[MAXXRES * 3];
void cleanup()
{
if(e1) fclose(e1);
if(e2) fclose(e2);
if(s) fclose(s);
}
void Erreur(char *msg)
{
printf("
%s
\n",msg);
exit(15);
}
unsigned int fgetnum(FILE *f)
{
unsigned int a;
a=fgetc(f)+(fgetc(f) << 8);
if (feof(f))
return (0xffff);
else
return (a);
}
void fputnum(unsigned int i)
{
fputc(i & 0xff,s);
fputc((i >> 8) & 0xff,s);
}
main(c,v)
int c;
char *v[];
{
unsigned int xr,yr,h,l1,l2;
puts("\n\t\t\t\t
Merge V1.1
");
puts("\t\t\t\t
©
LF
soft 1991
");
puts("\n\tMerge 2 fichier images au format QRT (DKBtrace,QRTtrace,...)\n");
if(c!=4) Erreur ("Usage :Merge src1 src2 dst");
atexit(cleanup);
if(!(e1=fopen(v[1],"rb"))) Erreur ("Impossible d'ouvrir le 1er fichier");
if(!(e2=fopen(v[2],"rb"))) Erreur ("Impossible d'ouvrir le 2nd fichier");
if(!(s=fopen(v[3],"wb"))) Erreur ("Impossible d'ouvrir le 3em fichier");
if(((xr=fgetc(e1))!=fgetc(e2)) || ((h=fgetc(e1))!=fgetc(e2)))
Erreur ("Les 2 images sources n'ont pas la même largeur !");
if((xr +=((unsigned int)h) << 8)>MAXXRES)
Erreur ("Images trops larges !!");
printf("Largeur = %d ,",xr);
yr = fgetc(e1); l1 = fgetc(e2);
h = fgetc(e1); l2 = fgetc(e2);
if((yr +=((unsigned int)h) << 8)<(l1 +=((unsigned int)l2) << 8))
yr = l1;
printf(" Hauteur = %d\n",yr);
/* On ecrit la taille */
fputnum(xr);
fputnum(yr);
l1=fgetnum(e1);
l2=fgetnum(e2);
while (!(feof(e1) &&feof(e2))){
#ifdef DEBUG
printf("l1 =%d , l2=%d",l1,l2);
#endif
if (l1<l2){
#ifdef DEBUG
puts(" => l1");
#endif
fputnum(l1);
fread(lb,1,xr*3,e1);
l1=fgetnum(e1);
} else if (l1==l2) {
#ifdef DEBUG
puts(" => l2");
#endif
fputnum(l1);
fread(lb,1,xr*3,e1);
fread(lb,1,xr*3,e2);
l1=fgetnum(e1);
l2=fgetnum(e2);
} else {
#ifdef DEBUG
puts(" => l2");
#endif
fputnum(l2);
fread(lb,1,xr*3,e2);
l2=fgetnum(e2);
}
fwrite(lb,1,xr*3,s);
}
exit(0);
}